#ifndef GRAPHVISITOR_H_
#define GRAPHVISITOR_H_

#include "core/Vertex.h"

/*
 *	Clase que sirve de iterador interno para los grafos.
 *	Consta de dos metodos que son ejecutados de acuerdo a lo que indique el metodo de
 *	visita que se utilice sobre el grafo.
 */
class GraphVisitor {
public:

	/*
	 * Constructor por defecto.
	 */
	GraphVisitor() {
	}

	/*
	 * Destructor.
	 */
	virtual ~GraphVisitor() {
	}

	/*
	 * Metodo de visita para el vertice.
	 */
	virtual void visitVertex(Vertex* vertex) = 0;

	/*
	 * Metodo de visita para la arista.
	 */
	virtual void visitEdge(Edge* edge) = 0;
};

#endif /* GRAPHVISITOR_H_ */
